package cn.org.xuanguang.kepler.hormos.orm.cmd;

import cn.org.xuanguang.kepler.hormos.orm.service.IService;

public interface ICmd<E, K> {

    public IService<E, K> getService();
//
//
//    @PatchMapping
//    @Operation(summary = "保存数据", description = "如果传入了id,并且对应数据存在,则尝试覆盖,不存在则新增.")
//    default SaveResult save(@RequestBody E payload) {
//
//    }
//    default SaveResult save(@RequestBody List<E> payload) {
//        return getRepository()
//                .save(Authentication
//                        .current()
//                        .map(auth -> {
//                            for (E e : payload) {
//                                applyAuthentication(e, auth);
//                            }
//                            return payload;
//                        })
//                        .orElse(payload)
//                );
//    }
//
//    @PostMapping("/_batch")
//    @SaveAction
//    @Operation(summary = "批量新增数据")
//    default int add(@RequestBody List<E> payload) {
//        return getRepository()
//                .insertBatch(Authentication
//                        .current()
//                        .map(auth -> {
//                            for (E e : payload) {
//                                applyAuthentication(e, auth);
//                            }
//                            return payload;
//                        })
//                        .orElse(payload)
//                );
//    }
//
//    @PostMapping
//    @SaveAction
//    @Operation(summary = "新增单个数据,并返回新增后的数据.")
//    default E add(@RequestBody E payload) {
//        this.getRepository()
//                .insert(Authentication
//                        .current()
//                        .map(auth -> applyAuthentication(payload, auth))
//                        .orElse(payload));
//        return payload;
//    }
//
//
//    @PutMapping("/{id}")
//    @SaveAction
//    @Operation(summary = "根据ID修改数据")
//    default boolean update(@PathVariable K id, @RequestBody E payload) {
//
//        return getRepository()
//                .updateById(id, Authentication
//                        .current()
//                        .map(auth -> applyAuthentication(payload, auth))
//                        .orElse(payload))
//                > 0;
//
//    }
}
